Ciklet

Ciklet sherbejne per te ekzekutuar nje bllok te caktuar kodi nje numer te specifikuar heresh, ose per aq kohe sa nje kusht i caktuar te jete i vertete.

Ne shume raste kur shkruajme kod, deshirojme qe nje pjese kodi te ekzekutohet disa here ne menyre te njepasnjeshme. Ne vend qe te perserisim shkrimin e kodit aq here sa duam ta ekzekutojme, ne perdorim ciklet ne menyre qe kodin ta shkruajme vetem njehere, dhe eshte cikli ai qe perserit ekzekutimin e tij.

Eshte dicka e gabuar perseritja e kodit disa here kur kemi mundesi ta menjanojme ate. P.sh. nuk duhet te perseritim kodin si me poshte. Supozojme qe duam te printojme ne ekrat numrat nge 1 deri ne 10 te shoqeruar me fjalen Numri _.

Metode e gabuar:

<?php

$numri = 1;
print("Numri $numri <br/>");

$numri++;
print("Numri $numri <br/>");

$numri++;
print("Numri $numri <br/>");

$numri++;
print("Numri $numri <br/>");

// E keshtu me radhe

Etiketa <br/> thjesht do te na kalonte ne nje rresht te ri. Normalisht rezultati i kodit te mesiperm do te na printonte ne brouser:

Numri 1
Numri 2
Numri 3
Numri 4
...

Por, veme re qe kjo eshte dicka e bezdisshme, pasi imagjino sikur te duam te printojme listen me 100 numra. Do te na duhet te perserisim kodin 100 here? Per te menjanuar perseritjen e kodit perdoren ciklet, te cilat iterojne (perseriten) nje numer te caktuar heresh ne baze te nje kushti, dhe ekzekutojne te njejtin bllok kodi disa here derisa kushti te jete i vertete. Ne rast se kushti nuk plotesohet e nderpret ekzekutimin.

PHP suporton ciklet e meposhtme:

  • for − perserit nje bllok kodi nje numer te caktuar heresh.
  • while − perserit nje bllok kodi nqs. dhe per aq kohe sa nje kusht i caktuar eshte true.
  • do...while − ekzekuton nje bllok kodi nje here, dhe me pas perserit ciklin per sa kohe nje kusht i vecante eshte true.
  • foreach − ekzekuton nje bllok kodi per cdo element ne nje array

Per te kontrolluar ekzekutimin e cikleve perdoren edhe deklaratat continue dhe break te cilat do te sqarohen me poshte.

Cikli for

Ciklet for perdoren kur ne e dime qe ne fillim sesa here blloku i kodit do te ekzekutohet.

Sintaksa:

pre for (inicializimi; kushti; inkrementimi){ Kodi qe do te ekzekutohet; }

Pjesa e quajtur inicializimi eshte ajo pjese kodi qe ekzekutohet gjithome ne fillim te cdo cikli perserites. Kryesisht ne kete pjese behet inicializimi i nje variabli iterues (counter), ku i japim vleren e tij fillestare. Tradicionalisht ketij variabli i vendoset emri $i, por mund ti vendosim cfare do lloj emri.

Pjesa e dyte eshte kushti ku validohet (vleresohet) ne fillim te cdo cikli perserites. Nqs. kushti eshte true cikli vazhdon ekzekutimin e radhes, perndryshe nqs. kthen false cikli for perfundon.

Pjesa e trete qe eshte shenuar inkrementimi perdoret kryesisht per te inkrementuar variablin iterues, por mund te vendoset cfaredo lloj kodi qe duam te ekzekutojme ne fund te cdo cikli perserites.

Shembull:

<?php

for ($i=1; $i<=5; $i++) {
  print("Numri $i <br/>");
}

Ne shembullin e mesiperm fillimisht inicializohet variabli iterues $i me vleren fillestare 1. Kushti eshte i tille, qe do te jete i vertete per aq kohe sa vlera e $i te jete me e vogel ose e barabarte me 5. Ne pjesen e trete behet inkrementimi i variablit iterues $i.

Si rezultat i ekzekuttimit te kodit te mesiperm do te dale:

Numri 1
Numri 2
Numri 3
Numri 4
Numri 5

Pasi $i arrin vleren 5, behet vleresimi i kushtit (5 <= 5) dhe kushti eshte i vertete, ndaj printohet Numri 5. Me pas ekzekutohet pjesa e trete, pjesa e inkrementimit (ne fund te cdo cikli) ku $i merr vleren 6. Kthehemi perseri ne krye te ciklit for ku validohet perseri kushti (6 <= 5) por ne kete rast kushti eshte i pavertete ndaj ketu nderpritet menjehere ekzekutimi.

Cikli while

Cikli while do te ekzekutoje nje bllok kodi nqs. dhe per aq kohe sa nje kusht i caktuar eshte true.

Figura 2: Cikli while

Cikli while

Sintaksa:

 while (kushti) {
   Kodi qe do te ekzekutohet;
}

Shembullin e mesiperm qe paraqitem per ciklin for le ta shohim sesi ndertohet me ciklin while:

<?php

$i = 1;

while($i<=5) {
  print("Numri $i <br/>");
  $i++;
}

Ne fillim te cdo cikli vleresohet kushti nqs. eshte i vertete apo jo. Nqs. kushti eshte i vertete vazhdon ekzekutimi i bllokut te kodit brenda ciklit while. Gjate ekzekutimit kemi inkrementuar variablin $i pasi ne rast se nuk do t'a inkrementoja, cikli do te ishte gjithmone i vertete dhe do te kishim infinit ekzekutime. Nderkohe qe inkrementoj vairbalin $i ne fund te bllokut te kodit, radha ekzekutimit kalon perseri tek fillimi i ciklit while ku vleresohet perseri kushti. Per sa kohe qe kushti eshte i vertete vazhdon ekzekutimi i bllokut te kodit, perndryshe ne momentin qe kushti kthen false, atehere nderpritet menjehere ekzekutimi dhe blloku i kodit nuk ekzekutohet me.

Rezultati qe do te jape kodi i mesiperm eshte i njejte me ate cfare treguam me lart per ciklin for:

Numri 1
Numri 2
Numri 3
Numri 4
Numri 5

Cikli do...while

Ky cikel ekzekuton nje bllok kodi nje here, dhe me pas iteron (perserit ciklin) per sa kohe nje kusht i caktuar eshte true. Pra, eshte e sigurte qe blloku i kodit do te ekzekutohet te pakten nje here. Sa i perket hereve te tjera te ekzekutimit varen nga vertetesia e kushtit.

Sintaksa:

do {
   Kodi qe do te ekzekutohet;
 } while (kushti);

Shembull:

<?php

$i = 1;

do {
  print("Numri $i <br/>");
  $i++;
} while($i<=5);

Shembulli i mesiperm eshte i njejte me ate te ciklit while dhe jep te njejtin rezultat.

Le te marrim nje rast kur kushti nuk plotesohet asnjehere:

<?php

$i = 10;

do {
  print("Numri $i <br/>");
  $i++;
} while($i<=5);

Ne kete rast variabli $i ka vleren 10, dhe kushti ( 10 <= 5) nuk do te plotesohet asnjehere. Por, perseri ne brouser do te printohet: Numri 10, pasi blloku i ketij cikli ekzekutohet te pakten njehere, edhe ne rast se kushti nuk plotesohet.

Cikli foreach

Ciklli foreach ekzekuton nje bllok kodi per cdo element ne nje array. Ky cikel merr elementet e array-t me radhe dhe i ben ata te disponueshem brenda bllokut te kodit.

Sintaksa:

foreach ($array as $value) {
   Kodi qe do te ekzekutohet;
}

Ne kete rast ne variablin $value ruhet elementi i aktual i koleksionit $array.

Shembull:

<?php

$numrat = array( 1, 2, 3, 4, 5);
foreach( $numrat as $value ) {
  print("Numri $value <br/>");
}

Rezultati ne dalje do te jete:

Numri 1
Numri 2
Numri 3
Numri 4
Numri 5

Ajo cfare ndodh eshte qe merren me radhe te gjithe elementet e array-t me emer $numrat, dhe ruhen ne variablin e perkohshem $value. Pas marrjes se cdo elementi ekzekutohet blloku i kodit print("Numri $value <br/>");, ne te cilin kemi perdorur edhe vleren e variablit te perkohshem $value qe ne te vertete sesht gje tjeter vecse vlera e elementit aktual te array-t. Blloku i kodit do te ekzekutohet aq here sa numri i elementeve te array-t.

Nje menyre tjeter e perdorimit te ciklit foreach eshte rasti me nje array i tipit associative. Ne kete rast kemi mundesine te perdorim dy variabla te perkohshem, ku njeri ruan celesin dhe tjeter vleren e elementit.

Shembull:

<?php

$studentet = array( "Arber" => 10, "Endri" => 9, "Genti" => 10);

foreach($studentet as $key => $value) {
   print("Studenti: $key, Nota: $value <br/>");
}

Ne kete rast variabli i perkohshem $key mban celesin (key) e elementit aktual te array-t (emrin e studentit), ndersa variabli $value mban vleren e elementit (noten). Ne dalje do te printohet:

Studenti: Arber, Nota: 10
Studenti: Endri, Nota: 9
Studenti: Genti, Nota: 10

break dhe continue

Ne shume raste mund te na duhet te nderpresim ekzekutimin e nje cikli ne menyre te parakohshme, edhe pse kushtet mund te plotesohen. Perdorim deklaraten break brenda bllokut te kodit per te ndaluar ekzekutimin e cikleve para kohe.

Shembull:

<?php

$i = 1;

while($i<=5) {
  print("Numri $i <br/>");

  if($i == 3) break;

  $i++;
}

Ne shembullin e mesiperm brenda bllokut te kodit shohim qe bejme nje kontroll te variablit $i dhe ne rast se ajo eshte e barabarte me 3 ekzekutojme break, i cili e ndalon vazhdimin e ekzekutimit te bllokut ne menyre te menjehershme. Rezultati nga kodi i mesiperm do te jete:

Numri 1
Numri 2
Numri 3

Shohim qe cikli do te ekzekutohet derisa variabli $i merr vleren 3. Pasi ai merr vleren 3 printon rreshtin ne ekran, kontrollohet kushti ne bllokun e kodit if($i == 3), kushti kthen true ndaj ekzekutohet break dhe cikli perundon.

Ne shume raste mund te na duhet te nderpresim ekzekutimin e ciklit perserites (iteracionit) aktual, dhe te kalojme menjehere tek cikli pasardhes. Perdorim deklaraten continue brenda bllokut te kodit per te ndaluar ekzekutimin e iteracionit aktual para kohe, dhe per te kaluar tek iteracioni pasardhes.

Shembull:

<?php

$numrat = array( 1, 2, 3, 4, 5);

foreach( $numrat as $value ) {

   if($value == 3) continue;

   print("Numri $value <br/>");
}

Ne shembullin e mesiperm, ne momentin qe $value do te jete e barabarte me 3 nuk do te vazhdohet me ekzekutimin e bllokut te kodit per kete iteracion, por do te kalohet ne interacionin tjeter, pra ne elementin e radhes te array-t. Ne ekran do te printohet:

Numri 1
Numri 2
Numri 4
Numri 5

Veme re qe rreshti Numri 3 nuk eshte printuar pasi blloku i kodit kur $value ka vleren 3 tejkalohet me ane te perdorimit te deklarates continue;

results matching ""

    No results matching ""